Handling Blockers: A Guide for Engineering Leaders
Handling blockers is a constant process of refinement. It requires a system, consistent effort, and a leadership team committed to removing obstacles and empowering their engineers. By focusing on prevention, ownership, and clear communication, you can keep projects moving forward, even when the unexpected happens.
Understanding Blockers
A blocker is anything that prevents a team member or the entire team from making progress on a task or project. Identifying these roadblocks quickly is crucial. Blockers can be technical, organizational, or even personal. Recognizing the type of blocker helps determine the best course of action.
Types of Blockers
Here’s a breakdown of common blocker categories:
- Technical Blockers: Issues related to code, infrastructure, or tools (e.g., bugs, environment setup problems, missing dependencies).
- Dependency Blockers: Waiting on another team, service, or external vendor. Often the most challenging to resolve.
- Process Blockers: Bureaucracy, slow approvals, unclear requirements, or inefficient workflows.
- Knowledge Blockers: Lack of information, documentation, or expertise.
- Personal Blockers: Skill gaps, lack of confidence, or external personal challenges impacting an individual's ability to contribute. It’s critical to approach these with empathy and offer support, including directing individuals to appropriate resources like HR or Employee Assistance Programs (EAPs) when appropriate.
Identifying Blockers
- Daily Stand-ups: Use daily stand-ups not just for status updates, but as a forum to actively solicit blockers.
- Kanban/Scrum Boards: Visualizing work in progress helps identify bottlenecks and stalled tasks.
- Regular Check-ins: One-on-one meetings provide a safe space for team members to raise concerns they might not share in a group setting.
- Retrospectives: Regularly review past sprints or projects to identify recurring blockers and systemic issues.
Resolving Blockers: A System for Action
1. Triage & Prioritization
Not all blockers are created equal. Use a simple scoring system to prioritize:
- Impact: (1-3, 1=Low, 3=High) – How significantly does this blocker affect the project or team?
- Urgency: (1-3, 1=Low, 3=High) – How quickly does this blocker need to be resolved?
Example: A critical bug blocking a release (Impact: 3, Urgency: 3) takes priority over a minor documentation issue (Impact: 1, Urgency: 1).
2. Ownership: The DRI Framework
Assign a Directly Responsible Individual (DRI) to each blocker. The DRI is accountable for driving the issue to resolution, even if they don’t personally solve it. This ensures clarity and prevents blockers from falling through the cracks.
3. Escalation
When a blocker cannot be resolved quickly, or requires assistance from another team, escalate it through the appropriate channels.
- What to Escalate: Blockers impacting critical path items, those requiring cross-team coordination, or those exceeding a predefined time threshold.
- Escalation Information: Clearly describe the blocker, its impact, the steps already taken, and the assistance needed.
- Expectations: Establish clear expectations for response times and resolution timelines.
Preventing Blockers: Proactive Measures
1. Technical Debt Management
Prioritize addressing technical debt. Unresolved debt creates future blockers and slows down development velocity.
2. Dependency Management
- Shared Roadmaps: Collaborate with dependent teams to align roadmaps and identify potential conflicts early.
- Negotiation: Be prepared to negotiate scope or timelines to mitigate dependencies.
- De-scoping: Temporarily remove features that rely on unresolved dependencies.
3. Process Improvement
- Streamline Approvals: Reduce bureaucracy and empower teams to make decisions.
- Clear Requirements: Ensure well-defined and unambiguous requirements.
- Automate Tasks: Automate repetitive tasks to free up engineers’ time.
4. Knowledge Sharing
- Documentation: Invest in comprehensive and up-to-date documentation.
- Knowledge Base: Create a centralized knowledge base where team members can find answers to common questions.
- Pair Programming/Mentorship: Encourage knowledge sharing through pair programming and mentorship programs.
5. Defined Interfaces & Modular Architecture
Designing systems with well-defined interfaces and a modular architecture enhances resilience and reduces the impact of blockers. With a modular architecture, a failure in one component can be isolated, preventing cascading failures and allowing other components to remain operational.
The Engineering Leader’s Role: Facilitating Solutions
Your primary role isn't to solve every blocker, but to remove the obstacles preventing your team from solving them.
- Active Listening: Create a safe space for team members to raise concerns.
- Empowerment: Trust your team to take ownership of blockers and find solutions.
- Facilitation: Help coordinate resources and communication across teams.
- System Thinking: Identify and address systemic issues that contribute to recurring blockers.
Creating a Culture of Transparency
Encourage open communication and transparency. When blockers are visible, they can be addressed quickly and collaboratively. Regularly review blockers in team meetings and celebrate successes in resolving them.
By adopting these strategies, you can create a more efficient, productive, and resilient engineering team.